﻿//============================================================
//write by bxl at 2021-06-21 13:38:14
//============================================================



using BCCommon;
using BCCommon.TMS.FreightEnums;
using BCCommon.TMS.Order;
using BCDto.CRM.BigCustomerFreightConfiguration;
using BCDto.Sim.Admin.Admin;

namespace BCService.CRM.BigCustomerFreightConfiguration
{
    public interface IBigCustomerFreightConfigurationService
    {
        /// <summary>
        /// 添加新大客户运费配置纪录
        /// </summary>
        /// <param name="bigCustomerFreightConfigurationRequestDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        BigCustomerFreightConfigurationDto Add(BigCustomerFreightConfigurationRequestDto bigCustomerFreightConfigurationRequestDto, AdminDto admin);


        /// <summary>
        /// 删除大客户运费配置记录
        /// </summary>
        /// <param name="bigCustomerFreightConfigurationId"></param>
        /// <returns></returns>
        void Delete(long bigCustomerFreightConfigurationId);


        /// <summary>
        /// 获取大客户运费配置记录
        /// </summary>
        /// <param name="bigCustomerFreightConfigurationId"></param>
        /// <returns></returns>
        BigCustomerFreightConfigurationDto GetById(long bigCustomerFreightConfigurationId);
        /// <summary>
        /// 获取大客户运费配置记录
        /// </summary>
        /// <param name="freightConfigurationId">运费配置Id</param>
        /// <param name="bigCustomerId">大客户Id</param>
        /// <returns></returns>
        BigCustomerFreightConfigurationDto GetByFreightId(long freightConfigurationId, long bigCustomerId);
        /// <summary>
        /// 获取大客户运费配置记录
        /// </summary>
        /// <param name="bigCustomerFreightConfigurationId"></param>
        /// <returns></returns>
        BigCustomerFreightConfigurationViewDto GetViewById(long bigCustomerFreightConfigurationId);

        /// <summary>
        /// 修改大客户运费配置记录
        /// </summary>
        /// <param name="bigCustomerFreightConfigurationPutDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        BigCustomerFreightConfigurationDto Update(BigCustomerFreightConfigurationPutDto bigCustomerFreightConfigurationPutDto, AdminDto admin);


        /// <summary>
        /// 获取大客户运费配置列表 分页
        /// </summary>
        /// <param name="admin"></param>
        /// <param name="bigCustomerId"></param>
        /// <param name="vehicleTypeId">车型Id</param>
        /// <param name="vehicleCategoryReferenceId">车辆分类映射Id</param>
        /// <param name="provinceCode">省份编码</param>
        /// <param name="cityCode">城市编码</param>
        /// <param name="countyCode">区县编码</param>
        /// <param name="sourceType">订单来源</param>
        /// <param name="freightType">物流类型</param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<BigCustomerFreightConfigurationViewDto> GetList(AdminDto admin, long? bigCustomerId, int? vehicleTypeId, int? vehicleCategoryReferenceId, string provinceCode, string cityCode, string countyCode, OrderSourceType? sourceType, FreightType? freightType, int pageIndex, int pageSize);
    }
}